// 按位异或：当两个操作数相应的比特位有且只有一个1时，结果为1，否则为0。
// String.prototype.match()：检索返回一个字符串匹配正则表达式的的结果。
export default (str) => {
  let ret = []
  let match = (subStr) => {
    let first = subStr.match(/^(0+|1+)/)[0]
    let last = (first[0] ^ 1).toString().repeat(first.length)
    let reg = new RegExp(`^(${first}${last})`)
    if (reg.test(subStr)) return RegExp.$1
    else return ''
  }
  for (let i = 0, len = str.length - 1; i < len; i++) {
    let sub = match(str.slice(i))
    if (sub) ret.push(sub)
  }
  return ret
}